﻿<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <script>
        var obj = {
            name: "lili",
            age: 18,
        }
        var obj1 = new Proxy(obj, {
            // 获取拦截 在对这个对象进行获取时,会先执行这个函数
            get: function (target, propKey, receiver) {
                console.log(target); //{}  处理的对象
                console.log(propKey); //要读取的属性名
                console.log(receiver); //Proxy {}  新生成的拦截对象
                // 返回要获取的值
                // return 10;
                // Reflect 是js提供的新的操作对象的 (基本是结合Proxy使用的)
                // get() 是获取用的
                return Reflect.get(target, propKey, receiver)
            },
            set: function (target, propKey, value, receiver) {
                console.log("有谁设置了", propKey, "属性");
                return Reflect.set(target, propKey, value, receiver)
            }
        })

        // var n =obj1.name 
        // console.log(obj1.name);
        obj1.sex = "true"

        // var str = new String();
        // console.log(str);
    </script>
</body>
</html>